home *** CD-ROM | disk | FTP | other *** search
- /* which command - searches through path for a executable with the
- * given name.
- */
- #include <stdio.h>
- /* #include <memory.h> */
- #include <string.h>
- #include <types.h>
- #include <stat.h>
-
- extern char * getenv();
- char filename[2048];
-
- main(argc, argv)
- int argc;
- char * argv[];
- {
- int i,pathlen,sufflen,filelen;
- char * path;
- register char * pathtok;
- register char * curpath;
- char * suff;
- register char * cursuff;
- struct stat statb;
-
- path = getenv("PATH");
- pathlen = strlen(path);
- pathtok = malloc(pathlen);
- suff = ".ttp,.tos,.prg,.sh,.g";
- sufflen = strlen(suff);
-
-
- for (i = 1; i < argc; ++i) {
- memcpy(pathtok,path,pathlen);
- curpath=strtok(pathtok,":");
- while (curpath!=(char *)NULL) {
-
- cursuff=suff;
- while(*cursuff!='\0') {
- strcpy(filename,curpath);
- strcat(filename,"/");
- strcat(filename,argv[i]);
- filelen=strlen(filename);
- while (*cursuff!='\0' && *cursuff!=',') {
- filename[filelen]=*cursuff;
- filelen++;
- cursuff++;
- }
- filename[filelen]='\0';
- if (stat(filename,&statb)==0) {
- printf("%s\n",filename);
- goto next_argument;
- }
- if (*cursuff!='\0') {
- cursuff++;
- }
- } /* next suffix */
- curpath=strtok(NULL,":");
- } /* next path */
- printf("%s not found in %s\n",argv[i],path);
- next_argument:;
- } /* next argument */
- return 0;
- }
-